// #include "Thread.hpp"
// #include <vector>

// void Run(void* args)
// {
//     while(true) {
//         printf("New thread\n");
//         // cout << a << endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     // Thread<int> t(Run, 123);
//     // t.Run();
//     // t.Join();
//     vector<Thread<void*>> v;
//     for (size_t i = 0; i < 10; i++) {
//         v.push_back(Thread<void*>(Run));
//     }

//     for(auto& e : v) {
//         e.Run();
//     }

//     for(auto& e : v) {
//         e.Join();
//     }
//     return 0;
// }

// ---------------------------
#include "ThreadPool.cc"
#include "Task.hpp"
#include <ctime>

int main()
{
    srand((unsigned int)time(nullptr));
    ThreadPool<Task>* tp = new ThreadPool<Task>();
    tp->Start();
    while(true) {
        int x = rand() % 50;
        int y = rand() % 10;
        char op = opStr[rand() % 4];
        Task t(x, y, op);
        tp->Push(t);
        printf("Main thread make task, %s\n", t.GetTask().c_str());
        sleep(1);
    }
    return 0;
} 